package com.iplay.other.Closure;

/**
 * Java编译器实现的只是capture-by-value，并没有实现capture-by-reference。
 * 而只有后者才能保持匿名内部类和外部环境局部变量保持同步。
 * 但Java又不肯明说，只能粗暴地一刀切，就说既然内外不能同步，那就不许大家改外围的局部变量。
 * @author dangwu
 * @since 2021/9/13 3:14 下午
 */
public class Outer1 {
    public AnnoInner getAnnoInner(int x) {
        final int[] y = {100};
        return new AnnoInner() {
            @Override
            public int addXYZ() {
                int z = 10;
                y[0] = 1000;
                System.out.println(y[0]);
                return x + y[0] + z;
            }
        };
    }
}
